iT邦幫忙

2022 iThome 鐵人賽

DAY 3
0
AI & Data

氣象食材系列 第 3

[ Day 3] 基本觀測資料-氣象站資料 (csv)

  • 分享至 

  • xImage
  •  

觀測資料

今天來說一下觀測資料,其實觀測資料可以分成很多,譬如氣象站儀器量測到的大氣狀態(溫度、風速等),或者氣象雷達量測到的回波。但有的時候,更細的分,又有所謂的遙測、掩星等。在此就不多做說明。

介紹氣象局可以下載歷史觀測的網站,請點這
裡面可以選擇測站、日期、月、日、小時的資料。

下圖為選擇台北測站、9月3日日報表的設定
https://ithelp.ithome.com.tw/upload/images/20220917/20150923PYg1eVBNAd.jpg

點選查詢之後,會跳轉頁面如下,右上角會有一個CSV下載選項,點選之後即可下載此頁面的資料。
https://ithelp.ithome.com.tw/upload/images/20220917/201509237sgmIVHf8L.jpg

那當然,這一份csv是可以直接使用excel讀取的,好像沒有必要特別說明,我就先跳過這一部分。
那今天如果我想用python讀取的話,要怎麼做呢?

這邊用一個很白癡的方式,就是將csv當成記事本文件讀,不用任何pandas、xarray等套件處理。

處理的程式如下

with open("466920-2022-09-03.csv","r",encoding='utf8') as fn:
    for line in fn:
        content.append(line)
fn.close()

newct = []
for ct in content:
    temp = ct.split("\n")[0].split(",")
    newct.append([x[1:-1] for x in temp])

#WS and temprature index position
idxws = newct[1].index("WS")
idxtmp = newct[1].index("Temperature")
ws, tmp = [], []

for hrs in range(24):
    ws.append(float(newct[2+hrs][idxws]))
    tmp.append(float(newct[2+hrs][idxtmp]))
print(ws,tmp)

依照上面的程式碼,就可以得到一天當中每一個小時的風速及溫度數值。
上述的程式碼,newct會是一個很多個list組成的list,每個list如下圖所示

https://ithelp.ithome.com.tw/upload/images/20220917/20150923kaoOD3DmV0.jpg

所以每個list都是每一列的資料。

可以將上述的資料視覺化

import matplotlib.pyplot as plt
fig, ax = plt.subplots(figsize=(8,6))
p1 = ax.plot(range(1,25),ws,label="Wind speed")
ax.set_xticks(range(1,25))
ax.set_xlabel("Hour")
ax.set_ylabel("Wind speed (m/s)")
ax.set_title("Taipei 46692", loc="left")
ax.set_title("2022-09-03", loc="right")
#ax.legend()
ax2 = ax.twinx()
p2 = ax2.plot(range(1,25),tmp,"g-",label="Temperature")
ax2.set_ylabel("Temperature")
#plt.egend([ax.patch,ax2.patch],loc="upper left")
p = p1 +p2
labs = [l.get_label() for l in p]
ax.legend(p, labs, loc='upper left')

就可以有下圖囉
https://ithelp.ithome.com.tw/upload/images/20220917/201509232Yeho2b6IG.png

會不會覺得這樣處理資料會發瘋呢?

明天介紹用pandas或xarray,就會覺得輕鬆多了


上一篇
[Day 2] 資料?可以吃嗎?
下一篇
[ Day 4]基本觀測資料-氣象站資料2 (csv)
系列文
氣象食材30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言